package vip.fkandy.mybatis.mapper.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

import vip.fkandy.mybatis.mapper.bean.Employee;

public interface EmployeeMapper {
    /**
     * 测试添加
     * @param employee
     * @return
     */
    int addEmp(Employee employee);
    /**
     *  测试删除
     * @param id
     */
    void deleteEmpById(Integer id);
    /**
     * 测试更新
     * @param employee
     * @return
     */
    boolean updateEmp(Employee employee);

    /**
     * 测试 单个参数
     * @param id
     * @return
     */
    Employee getEmpById(Integer id);

    /**
     * 测试多参数-使用注解指定参数名称
     * @param id
     * @param lastName
     * @return
     */
    Employee getEmpByIdAndLastName(@Param("id") Integer id, @Param("lastName") String lastName);

    /**
     * 测试多参数-使用map指定参数
     * @param map
     * @return
     */
    Employee getEmpByMap(Map<String, Object> map);

    /**
     * 返回一条记录的map；key就是列名，值就是对应的值
     * @param id
     * @return
     */
    Map<String, Object> getEmpByIdReturnMap(Integer id);

    /**
     * 测试单参数，返回集合类型
     * @param lastName
     * @return
     */
    List<Employee> getEmpsByLastNameLike(String lastName);
    //----------------------重点看下---------------------------------
    /**
     * 多条记录封装一个map：Map<Integer,Employee>:键是这条记录的主键，值是记录封装后的javaBean
     *
     *
     * @MapKey:告诉mybatis封装这个map的时候使用哪个属性作为map的key
     *
     * @param lastName
     * @return
     */
    @MapKey("lastName")
    Map<String, Employee> getEmpByLastNameLikeReturnMap(String lastName);
}